Field of the Invention
The present invention generally relates to updating virtual machines, as provided by cloud providers. More specifically, a mechanism for decisions on virtual machine service updates is provided, including such determinations as whether to update a virtual machine instance or to update the underlying virtual machine image used for instantiations of the virtual machine.
Description of the Related Art
It is common practice for cloud providers to publish a set of virtual machine images which consumers can instantiate as a specific virtual machine instance on the cloud, resulting in a simplified experience and shorter time to value. These images are a combination of virtual resources, an operating system, and potentially one or more software products. The provider must determine the optimal set of images to offer and must continually evaluate when updates are required. Updates typically come in the form of patches and either correct bugs or security vulnerabilities or introduce new functionality.
However, as will be explained, the complexity and effort required to apply patches to a virtual machine image is much higher than that required to patch a virtual machine instance. This is attributable to the risk of incorrectly modifying configurations, breaking the cloud provisioning for the image, or preventing the correct operation of a management stack.
If a patch is not applied to an image, it must then be applied to each instance of that image, either during the stage of instantiation or subsequent to the instantiation. This process results in the consumption of compute resources and the customer potentially receiving an initial instance which has not been tested by the cloud provider.
Thus, the present inventors have recognized a new problem in the field of cloud provisioning, in that there are choices to be made for cloud providers relative to virtual machine updating, including even the choice of whether to update the underlying virtual machine images or to update the virtual machine instances. Other updating decisions involve determining optimal timing for such updates, given that updates are constantly being received by cloud providers from software suppliers.